ইলাস্টিকসার্চ (ElasticSearch)

Complex Data Analysis এর উদাহরণ

Latest Technologies - ইলাস্টিকসার্চ (ElasticSearch) - Aggregations এবং Data Analysis | NCTB BOOK

Complex Data Analysis-এর উদাহরণ Elasticsearch-এ

Elasticsearch-এ Complex Data Analysis বলতে এমন ধরনের বিশ্লেষণকে বোঝায়, যেখানে একাধিক Aggregation এবং ফিল্টারিং ব্যবহার করে ডেটা থেকে গভীরতর ইনসাইট বের করা হয়। এই ধরনের বিশ্লেষণে সাধারণত Nested Aggregations, Pipeline Aggregations, এবং বিভিন্ন ফিল্টার ও প্যারামিটার ব্যবহার করা হয়, যাতে ডেটাকে বিভিন্ন স্তরে বিশ্লেষণ করে ফলাফল নির্ধারণ করা যায়।

নিচে Elasticsearch-এ Complex Data Analysis-এর কয়েকটি উদাহরণ দেওয়া হলো:

উদাহরণ ১: মাসিক বিক্রয় ট্রেন্ড এবং তার গড় বিশ্লেষণ

ধরা যাক, আমাদের একটি ই-কমার্স সাইট আছে, যেখানে মাসিক সেলস ডেটা রয়েছে। আমরা দেখতে চাই প্রতিটি মাসে কতটি বিক্রয় হয়েছে এবং সেই বিক্রয় থেকে একটি মুভিং এভারেজ বের করতে চাই, যাতে বিক্রয় ট্রেন্ড বিশ্লেষণ করা যায়।

GET /sales/_search
{
  "size": 0,
  "aggs": {
    "monthly_sales": {
      "date_histogram": {
        "field": "sale_date",
        "calendar_interval": "month"
      },
      "aggs": {
        "total_sales": {
          "sum": {
            "field": "amount"
          }
        },
        "moving_avg_sales": {
          "moving_avg": {
            "buckets_path": "total_sales"
          }
        }
      }
    }
  }
}

বিশ্লেষণ:

  • "monthly_sales": Date Histogram Aggregation-এর মাধ্যমে প্রতি মাসের বিক্রয় ডেটা গ্রুপ করা হয়েছে।
  • "total_sales": প্রতিটি মাসে সেলসের মোট পরিমাণ গণনা করা হয়েছে।
  • "moving_avg_sales": মুভিং এভারেজ বের করার জন্য Pipeline Aggregation ব্যবহার করা হয়েছে, যা প্রতিটি মাসের সেলস ট্রেন্ড বিশ্লেষণ করতে সহায়ক।

উদাহরণ ২: কর্মচারীদের বিভাগভিত্তিক গড় বেতন বিশ্লেষণ

ধরা যাক, আমাদের একটি কর্মচারী ডেটাবেস রয়েছে এবং আমরা প্রতিটি ডিপার্টমেন্টের গড় বেতন এবং ডিপার্টমেন্টভিত্তিক সর্বোচ্চ ও সর্বনিম্ন বেতন নির্ধারণ করতে চাই।

GET /employees/_search
{
  "size": 0,
  "aggs": {
    "department_groups": {
      "terms": {
        "field": "department.keyword"
      },
      "aggs": {
        "average_salary": {
          "avg": {
            "field": "salary"
          }
        },
        "max_salary": {
          "max": {
            "field": "salary"
          }
        },
        "min_salary": {
          "min": {
            "field": "salary"
          }
        }
      }
    }
  }
}

বিশ্লেষণ:

  • "department_groups": Terms Aggregation ব্যবহার করে প্রতিটি ডিপার্টমেন্ট গ্রুপ করা হয়েছে।
  • "average_salary": প্রতিটি ডিপার্টমেন্টে কর্মচারীদের গড় বেতন বের করা হয়েছে।
  • "max_salary" এবং "min_salary": প্রতিটি ডিপার্টমেন্টের সর্বোচ্চ এবং সর্বনিম্ন বেতন নির্ধারণ করা হয়েছে।

উদাহরণ ৩: অবস্থানভিত্তিক বিক্রয় বিশ্লেষণ

ধরা যাক, আমাদের একটি লোকেশনভিত্তিক সেলস ডেটা রয়েছে এবং আমরা প্রতিটি অঞ্চলের বিক্রয় বিশ্লেষণ করতে চাই। আমরা নির্ধারণ করতে চাই প্রতিটি অঞ্চলে কতগুলো সেল হয়েছে এবং সেই অঞ্চলে গড় বিক্রয়ের পরিমাণ।

GET /sales/_search
{
  "size": 0,
  "aggs": {
    "sales_by_location": {
      "geo_distance": {
        "field": "location",
        "origin": "40.7128, -74.0060",
        "ranges": [
          { "to": 10 },
          { "from": 10, "to": 50 },
          { "from": 50, "to": 100 }
        ]
      },
      "aggs": {
        "average_sales_amount": {
          "avg": {
            "field": "amount"
          }
        },
        "total_sales_count": {
          "value_count": {
            "field": "amount"
          }
        }
      }
    }
  }
}

বিশ্লেষণ:

  • "sales_by_location": Geo Distance Aggregation ব্যবহার করে লোকেশন অনুযায়ী ডেটা ভাগ করা হয়েছে। এটি একটি নির্দিষ্ট স্থান (latitude: 40.7128, longitude: -74.0060) থেকে নির্দিষ্ট দূরত্বের মধ্যে বিক্রয় ডেটা বিশ্লেষণ করে।
  • "average_sales_amount": প্রতিটি রেঞ্জের মধ্যে গড় বিক্রয় বের করা হয়েছে।
  • "total_sales_count": প্রতিটি রেঞ্জের মধ্যে মোট বিক্রয়ের সংখ্যা গণনা করা হয়েছে।

উদাহরণ ৪: প্রোডাক্ট রিভিউ বিশ্লেষণ

ধরা যাক, আমাদের একটি প্রোডাক্ট রিভিউ সিস্টেম রয়েছে এবং আমরা প্রতিটি প্রোডাক্টের রিভিউ বিশ্লেষণ করতে চাই, যেমন গড় রেটিং, সর্বোচ্চ রেটিং, এবং কতগুলো রিভিউ হয়েছে।

GET /reviews/_search
{
  "size": 0,
  "aggs": {
    "products": {
      "terms": {
        "field": "product_id.keyword"
      },
      "aggs": {
        "average_rating": {
          "avg": {
            "field": "rating"
          }
        },
        "max_rating": {
          "max": {
            "field": "rating"
          }
        },
        "review_count": {
          "value_count": {
            "field": "rating"
          }
        }
      }
    }
  }
}

বিশ্লেষণ:

  • "products": Terms Aggregation ব্যবহার করে প্রতিটি প্রোডাক্ট আলাদা করা হয়েছে।
  • "average_rating": প্রতিটি প্রোডাক্টের গড় রেটিং বের করা হয়েছে।
  • "max_rating": প্রতিটি প্রোডাক্টের সর্বোচ্চ রেটিং নির্ধারণ করা হয়েছে।
  • "review_count": প্রতিটি প্রোডাক্টে কতগুলো রিভিউ হয়েছে তা গণনা করা হয়েছে।

উদাহরণ ৫: মুভিং এভারেজ এবং টাইম সিরিজ বিশ্লেষণ

ধরা যাক, আমাদের একটি লগ ফাইল রয়েছে যেখানে প্রতি ঘন্টায় কতগুলো লগ এন্ট্রি হয়েছে তা বিশ্লেষণ করতে হবে। আমরা এক ঘন্টার ভিত্তিতে লগ এন্ট্রিগুলো গ্রুপ করে একটি মুভিং এভারেজ বের করতে চাই।

GET /logs/_search
{
  "size": 0,
  "aggs": {
    "logs_per_hour": {
      "date_histogram": {
        "field": "timestamp",
        "calendar_interval": "hour"
      },
      "aggs": {
        "log_count": {
          "value_count": {
            "field": "log_id"
          }
        },
        "moving_avg_logs": {
          "moving_avg": {
            "buckets_path": "log_count"
          }
        }
      }
    }
  }
}

বিশ্লেষণ:

  • "logs_per_hour": Date Histogram Aggregation ব্যবহার করে প্রতি ঘন্টার লগ এন্ট্রি গ্রুপ করা হয়েছে।
  • "log_count": প্রতিটি ঘন্টায় মোট লগ এন্ট্রির সংখ্যা গণনা করা হয়েছে।
  • "moving_avg_logs": প্রতিটি ঘন্টার জন্য মুভিং এভারেজ বের করা হয়েছে, যা ট্রেন্ড বিশ্লেষণে সহায়ক।

উপসংহার

Elasticsearch-এ Complex Data Analysis করার জন্য বিভিন্ন ধরণের Aggregation এবং ফিল্টার একত্রে ব্যবহার করে গভীরতর ইনসাইট এবং ট্রেন্ড নির্ধারণ করা যায়। Nested Aggregations, Pipeline Aggregations, এবং Geo Aggregations ব্যবহার করে বড় ডেটা সেট থেকে ডেটার সারাংশ এবং প্যাটার্ন নির্ধারণ করা যায়, যা রিপোর্টিং এবং সিদ্ধান্ত নেওয়ার জন্য অত্যন্ত কার্যকরী।

Content added By
Promotion